package com.wyp.scheduletaskdemo.utils;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * @Description:
 * @author: wyupeng
 * @date: 2021/6/15 14:00
 */
public class DateUtils {


    public static void main(String[] args) {

        // String cron = getCron(new Date());
        // System.out.println("cron = " + cron);

        DateTimeFormatter dfDateToCron = DateTimeFormatter.ofPattern("ss mm HH dd MM ? yyyy");

        String res = dfDateToCron.format(LocalDateTime.now());
        System.out.println("res = " + res);

        String cron = getCron(LocalDateTime.now());
        System.out.println("cron = " + cron);


        // //将当前日期进行格式化
        // System.out.println(dfDate.format(LocalDateTime.now()));
        // //将当前日期加一年，进行格式化
        // System.out.println(dfDate.format(LocalDateTime.now().plusYears(1)));
        // //输出
        // //020年07月18日
        // //2021年07月18日
        //
        // //将日期字符串，根据指定的格式，格式为日期
        // LocalDate parse = LocalDate.parse("2021年07月18日", dfDate);
        // //将日期加一年，格式化
        // System.out.println(dfDate.format(parse.plusYears(1)));
        //
        //
        // //将日期时间字符串，根据指定的格式，格式为日期时间
        // System.out.println(LocalDateTime.parse("2021年07月18日 12 25 30", dfDateTime));
        // System.out.println(LocalDateTime.now());


    }

    /***
     *
     * @param date
     * @param dateFormat : e.g:yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static String formatDateByPattern(Date date, String dateFormat){
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        String formatTimeStr = null;
        if (date != null) {
            formatTimeStr = sdf.format(date);
        }
        System.out.println("formatTimeStr = " + formatTimeStr);
        return formatTimeStr;
    }


    public static String formatDateByPattern(LocalDateTime date, String dateFormat){
        // SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        DateTimeFormatter dfDateToCron = DateTimeFormatter.ofPattern(dateFormat);
        String formatTimeStr = null;
        if (date != null) {
            formatTimeStr = dfDateToCron.format(date);
        }
        return formatTimeStr;
    }



    /***
     * convert Date to cron ,eg.  "0 07 10 15 1 ? 2016"
     * @param date  : 时间点
     * @return
     */
    public static String getCron(Date  date){
        String dateFormat="ss mm HH dd MM ? yyyy";
        return formatDateByPattern(date, dateFormat);
    }

    /**
     *
     * @param date
     * @return
     * 2021-06-17 00:00:00  -->  0 0 0 17 6 ? 2021
     */
    public static String getCron(LocalDateTime  date){
        String dateFormat="ss mm HH dd MM ? yyyy";
        return formatDateByPattern(date, dateFormat);
    }

}
